//
//  DBManager.m
//  LimitFreeProject
//


#import "DBManager.h"

@implementation DBManager
{
    //数据库对象
    FMDatabase *_database;
}
//非标准单例
+ (DBManager *)sharedManager {
    static DBManager *manager = nil;
    @synchronized(self) {//同步 执行 防止多线程操作
        if (manager == nil) {
            manager = [[self alloc] init];
        }
    }
    return manager;
}
- (id)init {
    if (self = [super init]) {
        NSString *filePath = [NSHomeDirectory()stringByAppendingString:@"/Documents/SnackCourier.db"];
        _database = [[FMDatabase alloc] initWithPath:filePath];
        if ([_database open]) {
            NSLog(@"数据库打开成功");
            [self creatTable];
        }else {
            NSLog(@"database open failed:%@",_database.lastErrorMessage);
        }
    }
    return self;
}
#pragma mark - 创建表
- (void)creatTable {
    //字段: 应用名 应用id 当前价格 最后价格 icon地址 记录类型 价格类型
    NSString *sql = @"create table if not exists snacks(id integer,imgUrl text,title text,originalPrice text,price text)";
    //创建表 如果不存在则创建新的表
    BOOL isSuccees = [_database executeUpdate:sql];
    if (!isSuccees) {
        NSLog(@"creatTable error:%@",_database.lastErrorMessage);
    }
}
//增加 数据 收藏/浏览/下载记录
//存储类型 favorites downloads browses
- (void)insertModel:(YJImmediatelygrabControllerModel*)model{
    
    if ([self isExistModelForId:model.id]) {
        NSLog(@"this snacks has  recorded");
        return;
    }
    NSString *sql = @"insert into snacks (id,imgUrl,title,originalPrice,price) values (?,?,?,?,?)";
    BOOL isSuccess = [_database executeUpdate:sql,[NSNumber numberWithInteger:model.id],model.imgUrl,model.title,model.originalPrice,model.price];
    if (!isSuccess) {
        NSLog(@"insert error:%@",_database.lastErrorMessage);
    }
}

//删除指定的应用数据 根据指定的类型
- (void)deleteModelForId:(NSInteger)Id  {
    NSString *sql = @"delete from snacks where id = ?";
    BOOL isSuccess = [_database executeUpdate:sql,[NSNumber numberWithInteger:Id]];
    if (!isSuccess) {
        NSLog(@"delete error:%@",_database.lastErrorMessage);
    }
}

//根据指定类型  查找所有的记录
//根据记录类型 查找 指定的记录
- (NSMutableArray *)readModel{
    
    NSString *sql=@"select * from snacks";
    FMResultSet *rs=[_database executeQuery:sql];
    NSMutableArray *ary=[[NSMutableArray alloc] init];
    while ([rs next]) {
        YJImmediatelygrabControllerModel *model=[[YJImmediatelygrabControllerModel alloc] init];
        model.id=[rs intForColumn:@"id"];
        model.imgUrl=[rs stringForColumn:@"imgUrl"];
        model.title=[rs stringForColumn:@"title"];
        model.originalPrice=[rs stringForColumn:@"originalPrice"];
        model.price=[rs stringForColumn:@"price"];
        [ary addObject:model];
    }
    return ary;
}

//根据指定的类型 返回 这条记录在数据库中是否存在
- (BOOL)isExistModelForId:(NSInteger)Id  {
    NSString *sql = @"select * from snacks where id = ?";
    FMResultSet *rs = [_database executeQuery:sql,[NSNumber numberWithInteger:Id]];
    if ([rs next]) {//查看是否存在 下条记录 如果存在 肯定 数据库中有记录
        return YES;
    }else{
        return NO;
    }
}


@end
